#!/usr/bin/env bash
# ******************************************************
# Filename     : nfs-install-centos8.sh
# Last modified: 2024-02-22 12:18
# Version      :
# Author       : jack.zang
# Email        : jack_zang@126.com
# Description  :
# curl -sfL https://gitee.com/jack_zang/public-scripts/raw/master/shell/nfs/nfs-install.sh | sh -s -
#
# ******************************************************

## 检查操作系统类型，加载 /etc/os-release 之后，会得到一个 $ID 变量
if [ -f /etc/os-release ]; then
    . /etc/os-release
    OS=$ID
else
    echo "无法确定操作系统类型。"
    exit 1
fi

## 根据操作系统类型安装 nfs
echo "---------- 安装 nfs 软件"
case $OS in
    ubuntu)
        sudo apt update
        sudo apt install nfs-kernel-server nfs-common -y
        ;;
    centos)
        yum update -y
        yum -y install nfs-utils rpcbind
        ;;
    *)
        echo "不支持的操作系统类型：$OS"
        exit 1
        ;;
esac



# 创建共享目录
SHARE_DIR="/data/nfs"
mkdir $SHARE_DIR -pv && chmod 777 $SHARE_DIR

# 配置共享的目录
FILE="/etc/exports"

if grep -q "$SHARE_DIR" "$FILE"; then
  echo "$VARIABLE 已存在于 $FILE 中，退出。"
  exit 0
else
  echo "$SHARE_DIR *(rw,async,insecure,anonuid=1000,anongid=1000,no_root_squash)" >> $FILE
fi

# 加载 nfs 目录
exportfs -rv

# 启动 nfs server和 rpc 服务
systemctl enable rpcbind nfs-server
systemctl start nfs-server rpcbind

# 查看 rpc 开放的 nfs server 端口
rpcinfo -p
# 检查服务端看下是否正确加载了设置的 /etc/exports 配置
showmount -e localhost

echo "共享目录为： IP:$SHARE_DIR"
echo "使用方法： mount  -t nfs [ip]:$SHARE_DIR [mount_dir]"

# 客户端测试
#$ yum -y install nfs-utils
#$ mkdir /mnt/test
#$ mount  -t nfs 192.168.10.209:/data/nfs /mnt/test

